import '@tarojs/async-await'
import Taro, { Component, Config } from '@tarojs/taro'
import { Provider } from '@tarojs/mobx'

import store from './store'

import './app.scss'

store.account.login()

class App extends Component {
  /**
   * 指定config的类型声明为: Taro.Config
   *
   * 由于 typescript 对于 object 类型推导只能推出 Key 的基本类型
   * 对于像 navigationBarTextStyle: 'black' 这样的推导出的类型是 string
   * 提示和声明 navigationBarTextStyle: 'black' | 'white' 类型冲突, 需要显示声明类型
   */
  config: Config = {
    pages: [
      'pages/home/index',
      'pages/personal/index',
      'pages/productList/index',
      'pages/productDetail/index',
      'pages/orderList/index',
      'pages/address/list/index',
      'pages/address/detail/index',
      'pages/pay/index',
    ],
    window: {
      backgroundTextStyle: 'light',
      navigationBarBackgroundColor: '#fff',
      navigationBarTitleText: 'WeChat',
      navigationBarTextStyle: 'black',
    },
    tabBar: {
      list: [
        {
          pagePath: 'pages/home/index',
          text: '首页',
          iconPath: './assets/navs/home.png',
          selectedIconPath: './assets/navs/home-selected.png',
        },
        {
          pagePath: 'pages/personal/index',
          text: '个人',
          iconPath: './assets/navs/personal.png',
          selectedIconPath: './assets/navs/personal-selected.png',
        },
      ],
    },
  }

  componentDidMount() {}

  componentDidShow() {}

  componentDidHide() {}

  componentCatchError() {}

  componentDidCatchError() {}

  // 在 App 类中的 render() 函数没有实际作用
  // 请勿修改此函数
  render() {
    return <Provider store={store} />
  }
}

Taro.render(<App />, document.getElementById('app'))
